import Base from "./base";

function getPathName() {
  return window.location.pathname;
}

class BrowserHistory extends Base {
  constructor(router) {
    super(router);
  }
  push(to) {
    //  window.dispatchEvent(new PopStateEvent('popstate'),to); // qiankun实现的路由就是这样解决的
    this.transitionTo(to,()=>{ // 先跳转再去更改浏览器的url路径
        window.history.pushState({}, "", to);
    })
  }
  getCurrentLocation() {
    return getPathName();
  }
  setupListener = ()=> {
    // 高版本浏览器下 可以使用popstate替换掉hashchange事件
    window.addEventListener("popstate", () => {
      // 可以监控到浏览器的前进后退事件
       this.transitionTo(getPathName())
    });
  }
}

// 实现路由拦截的钩子
export default BrowserHistory;
